home *** CD-ROM | disk | FTP | other *** search
/ Mac100% 1998 November / MAC100-1998-11.ISO.7z / MAC100-1998-11.ISO / オンラインソフト定点観測 / ユーティリティ / Mops 3.2.sea / Mops 3.2 / Mops source / PPC source / qArgs < prev    next >
Text File  |  1998-05-25  |  2KB  |  79 lines

  1. (*
  2. Note: -> is defined in qCond, not here.
  3.  
  4. This file is derived from Args.  It contains any defns from Args that:
  5.  
  6. 1. are needed for the PPC image as compiled on the 68k.
  7.  
  8. 2. have to be compiled BEFORE we start compiling PPC code - i.e. before
  9.     GO at the beginning of Setup.
  10.     
  11. So, here we only have to include words that generate 68k code, but
  12. which for some reason get EXECUTED after GO-time.  And of course if
  13. the definition is identical in Base, we can omit it here.
  14.  
  15. Thus we only include words which are immediate, or which get executed
  16. at compile time, AND are different from their original versions in Base
  17. (e.g. words which need to refer to CDP rather than DP).
  18.  
  19. *)
  20.  
  21.  
  22. ¥ Support for named parms and local variables
  23.  
  24. ¥ I think all we need here is the local section stuff.  We also
  25. ¥  need INLINE{, but we've already included this in file cg5 where
  26. ¥  it makes more sense (since the inline_h handler is there.
  27.  
  28. ¥ Special note: since qClass uses local sections, which must use the
  29. ¥  68k implementation of course, we must load this AFTER qClass,
  30. ¥  although this isn't the "proper" order.
  31.  
  32. : LOCAL
  33.     local?  ?error 93  1 -> local?        ¥ We change it to the normal -1
  34.                                         ¥ as soon as "{" is read.
  35.     postpone :  drop
  36.     postpone [
  37.     CDP -> loc_addr
  38.     $ 48000000  code,        ¥ uncond branch to be resolved by :loc
  39.     postpone reveal            ¥ local section name must be visible
  40. ;
  41.  
  42.  
  43. : :LOC
  44.     local? 1 = IF  msg# 96  THEN    ¥ warning  - no locals defined
  45.     ?loc
  46.     ' drop                            ¥ gobble word name
  47.     CDP -> const_data_start
  48.     $ BE020000  code,                ¥ marks this as the :loc position
  49.                                     ¥  (just for disassembly)
  50.  
  51.     false -> method?
  52.     false -> local?                    ¥ so entry sequence gets compiled
  53.     false ppc_entry                    ¥ handle ppc proc entry
  54.     drop 304                        ¥ security marker for :loc
  55.     curr-def
  56.       loc_addr -> curr-def
  57.       PLentry
  58.     -> curr-def
  59.     frameSize IF  initTemps  THEN
  60. ;        immediate
  61.  
  62.  
  63. : ;LOC
  64.     304 ?defn
  65.     false -> leaf?            ¥ let's just reduce the bug possibilities!
  66.     loc_addr 2-  (;)
  67.     loc_addr curr-def  resolve_unconditional_branch
  68.                             ¥ finally resolve the forward branch
  69.                             ¥   from LOCAL
  70. ;            immediate
  71.  
  72.  
  73. : ?ERROR        ¥ ( b -- )  Aborts and prints resource string if true.
  74.                 ¥ Usage:  ?error 999
  75.     postpone if
  76.     intrp1  ( get err# )  postpone literal   postpone die
  77.     postpone then  ;        immediate
  78.  
  79.